﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace BanVeXemPhim_Presentation
{
    public partial class UserControlAdminQuanLyPhim : UserControl
    {
        public UserControlAdminQuanLyPhim()
        {
            InitializeComponent();
        }
        private TheLoaiDTO[] _dsTheloai;

        public TheLoaiDTO[] DsTheloai
        {
            get { return _dsTheloai; }
            set 
            {
                _dsTheloai = value; 
                if (_dsTheloai!=null)
                {
                    if (_dsTheloai.Length>0)
                    {
                        this.comboBoxTheLoai.Items.Clear();
                        int n = this._dsTheloai.Length;
                        for (int i = 0; i < n; i++)
                        {
                            if (_dsTheloai[i]!=null)
                            {
                                this.comboBoxTheLoai.Items.Add(_dsTheloai[i].TenTheLoai);
                            }
                            
                        }
                    }
                }
            }
        }

        private void buttonXoaThongTinPhim_Click(object sender, EventArgs e)
        {
            textBoxTenPhim.Text = "";
            textBoxDaoDien.Text = "";
            textBoxHangSanXuat.Text = "";
            comboBoxTheLoai.Text = "";
            textBoxDoDaiPhim.Text = "";
            textBoxNuocSanXuat.Text = "";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Title = "Chọn ảnh phim";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                textBoxHinhAnhPhim.Text = dlg.FileName;
            }
        }

        private void UserControlAdminQuanLyPhim_Load(object sender, EventArgs e)
        {
            UpdateDataGridPhim();
           
        }

        private void UpdateDataGridPhim()
        {
            TheLoaiControl theloaiControl = new TheLoaiControl();
            PhimControl phimControl = new PhimControl();
            DsTheloai = theloaiControl.LayDanhSachTheLoai();
            PhimDTO[] dsPhim = phimControl.LayDanhSachPhim();
            this.dataGridViewDanhSachPhim.DataSource = dsPhim;
            this.dataGridViewDanhSachPhim.Tag = dsPhim;
            FitSize(this.dataGridViewDanhSachPhim);
        }

        private void FitSize(DataGridView gv)
        {
            Size fitSize = new Size();
            fitSize.Width = gv.Width;

            // get fit height
            fitSize.Height = gv.ColumnHeadersVisible ? gv.ColumnHeadersHeight : 0;
            if (gv.Rows.Count < 9)
                fitSize.Height += gv.Rows[0].Height * (gv.Rows.Count + 1);
            else
                fitSize.Height += gv.Rows[0].Height * 9;
            gv.Size = fitSize;
        }
        private void LayThongTinPhim(ref PhimDTO phimDto)
        {
            phimDto.TenPhim = textBoxTenPhim.Text;
            phimDto.Hang = textBoxHangSanXuat.Text;
            phimDto.NuocSanXuat = textBoxNuocSanXuat.Text;
            phimDto.TheLoai = LayIdTheLoai(comboBoxTheLoai.Text);
            phimDto.DaoDien = textBoxDaoDien.Text;            
            phimDto.NgayKetThuc = Convert.ToDateTime(dateTimePickerNgayKetThuc.Value.ToShortDateString());
            phimDto.NgayKhoiChieu = Convert.ToDateTime(dateTimePickerNgayKhoiChieu.Value.ToShortDateString());
            phimDto.DoDai = int.Parse(textBoxDoDaiPhim.Text);
            string urlhinh = textBoxHinhAnhPhim.Text;
            if(urlhinh!="")
            {
                Bitmap bitmap=new Bitmap(urlhinh);
                if(bitmap!=null)
                {
                    MemoryStream stream=new MemoryStream();
                    bitmap.Save(stream,System.Drawing.Imaging.ImageFormat.Png);
                    phimDto.DataHinh = stream.ToArray();
                }
            }
        }
        private int LayIdTheLoai(string name)
        {
            int n = DsTheloai.Length;
            for (int i = 0; i < n; i++)
            {
                if (name == DsTheloai[i].TenTheLoai)
                    return DsTheloai[i].IdTheLoai;
            }
            return -1;
        }
        private void buttonThemPhim_Click(object sender, EventArgs e)
        {
            try
            {
                if (DieuKienThemPhim())
                {
                    PhimControl phimControl = new PhimControl();
                    PhimDTO phimDto = new PhimDTO();
                    LayThongTinPhim(ref phimDto);
                    phimControl.ThemPhim(phimDto);
                    MessageBox.Show("Thêm phim thành công!");
                    UpdateDataGridPhim();
                }

            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        private bool DieuKienThemPhim()
        {
            bool isSuccessful = true;
            PhimControl phimControl = new PhimControl();
            if (phimControl.KiemTraTenPhim(textBoxTenPhim.Text))
            {
                MessageBox.Show("Phim :" + textBoxTenPhim.Text + "\rĐã tồn tại!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                isSuccessful = false;
            }
            else
            if(textBoxTenPhim.Text=="")
            {
                MessageBox.Show("Tên phim không được rỗng!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                isSuccessful = false;
            }
            else
            if(this.comboBoxTheLoai.SelectedIndex<0)
            {
                MessageBox.Show("Chưa chọn thể loại phim\rVui lòng chọn thể loại phim!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                isSuccessful = false;
            }
            return isSuccessful;
        }
       

        private void buttonXoaPhim_Click(object sender, EventArgs e)
        {
            try
            {
                PhimControl phimControl = new PhimControl();
                PhimDTO phimDto = new PhimDTO();
                LayThongTinPhim(ref phimDto);
                phimControl.XoaPhim(phimDto);
                MessageBox.Show("Xóa phim thành công!");
                UpdateDataGridPhim();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        private void buttonCapNhatPhim_Click(object sender, EventArgs e)
        {
            try
            {
                PhimControl phimControl = new PhimControl();
                if (textBoxTenPhim.Text!="")
                {
                    if (phimControl.KiemTraTenPhim(textBoxTenPhim.Text))
                    {
                        PhimDTO phimDto = new PhimDTO();
                        LayThongTinPhim(ref phimDto);
                        phimControl.CapNhatPhim(phimDto);
                        MessageBox.Show("Cập nhật phim thành công!");
                        UpdateDataGridPhim();
                    }
                    else
                    {
                        MessageBox.Show("Phim không tồn tại!\rVui lòng chọn lại!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                } 
                else
                {
                    MessageBox.Show("Phim không tồn tại!\rVui lòng chọn lại!","Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        private void dataGridViewDanhSachPhim_MouseClick(object sender, MouseEventArgs e)
        {
            int index = this.dataGridViewDanhSachPhim.CurrentRow.Index;
            PhimDTO[] dsPhim = (PhimDTO[])this.dataGridViewDanhSachPhim.Tag;
            textBoxTenPhim.Text = dsPhim[index].TenPhim;
            textBoxDoDaiPhim.Text = dsPhim[index].DoDai.ToString();
            textBoxHangSanXuat.Text = dsPhim[index].Hang;
            textBoxNuocSanXuat.Text = dsPhim[index].NuocSanXuat;
            textBoxDaoDien.Text = dsPhim[index].DaoDien;
            dateTimePickerNgayKetThuc.Value = dsPhim[index].NgayKetThuc;
            dateTimePickerNgayKhoiChieu.Value = dsPhim[index].NgayKhoiChieu;
            this.comboBoxTheLoai.SelectedIndex = LayIndexTheLoai(dsPhim[index].TheLoai);
            if (comboBoxTheLoai.SelectedIndex==-1)
            {
                comboBoxTheLoai.Text = "Chọn thể loại phim...";
            }
        }
        private int LayIndexTheLoai(int id)
        {
            int n = _dsTheloai.Length;
            for (int i = 0; i < n; i++)
            {
                if (_dsTheloai[i].IdTheLoai == id)
                    return i;
            }
            return -1;
        }

        private void textBoxDoDaiPhim_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Những ký tự ko được nhập
            if ((e.KeyChar < (char)'0' || e.KeyChar > (char)'9') && e.KeyChar != (char)Keys.Back)
            {
                e.Handled = true;//ko cho nhập vào textbox
            }
        }
        
    }
}
